<?php
namespace app\controller;

use app\BaseController;
use think\facade\Db;

/**
 * 搜索
 * Class Keywords
 * @package app\controller
 * @author 下雨吧จุ๊บ
 */
class Keywords extends BaseController
{

    /**
     * @apiGroup 搜索
     * @apiVersion 1.0.0
     * @api {GET} /keyword  搜索
     * @apiDescription 搜索通用接口,根据模块使用不同参数
     * @apiParam {String} table 所搜索模块(必填*)
     * @apiParam {String} field 所搜索字段(必填*)
     * @apiParam {String} keywords 关键词
     * @apiSuccessExample SuccessExample 参数说明
     * 用户列表搜索 table : user
     * {
         * 字段说明(field)
         * 用户名 : username
         * 密码 : password
         * 真实姓名 : realname
         * 性别 : sex
         * 邮箱 : email
         * 部门职位 : department
         * 状态 : status
     * }
     *
     * 部门列表搜索 table : character
     * {
         * 字段说明(field)
         * 职位名称 : title
         * 状态 : status
         * 创建人 : author
         * 更新人 : updateauthor
         * 创建时间 : createtime
         * 更新时间 : updatetime
     * }
     *
     * 资讯线索搜索 table : clue
     * {
         * 字段说明(field)
         * 客户名称 : title
         * 电话 : tel
         * 客户类型 : type
         * 客户类别 : category
         * 客户来源 : from
         * 省份 : province
         * 城市 : city
         * 所属行业 : industry
         * 分配员工 : user
         * 网址 : link
         * 联系人 : contacts
         * 地址 : address
         * 咨询日期 : firsttime
         * 描述 : content
         * 创建时间 : createtime
         * 更新时间 : updatetime
         * 状态 : status
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function index()
    {
        $data = input();
        //必填项验证
        if (empty($data['table'])){
            error('520数据错误(Missing parameter table)');
        }
        //必填项验证
        if (empty($data['field'])){
            error('520数据错误(Missing parameter field)');
        }
        $keyword['list'] = Db::table($data['table'])->where($data['field'],'like','%'.$data['keywords'].'%')->select();
        success($keyword,'筛选成功');
    }

    /**
     * @apiGroup 搜索
     * @apiVersion 1.0.0
     * @api {GET} /keyword/create  根据时间搜索
     * @apiDescription 根据时间搜索
     * @apiParam {String} table 所搜索模块(必填*)
     * @apiParam {String} field 所搜索字段:创建时间或者修改时间(必填*)
     * @apiParam {String} starttime 开始时间 时间戳(必填*)
     * @apiParam {String} endtime 结束时间 时间戳(必填*)
     * @apiSuccessExample SuccessExample 成功事例
     * 根据时间搜索 table : 所搜索模块(同上↑)
     * {
         * 字段说明(field)
         * 创建时间 : createtime
         * 更新时间 : updatetime
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function create()
    {
        $data = input();
        //必填项验证
        if (empty($data['table'])){
            error('520数据错误(Missing parameter table)');
        }
        //必填项验证
        if (empty($data['field'])){
            error('520数据错误(Missing parameter field)');
        }
        //必填项验证
        if (empty($data['starttime'])){
            error('请选择开始时间');
        }
        //必填项验证
        if (empty($data['endtime'])){
            $data['endtime'] = time();
        }
        //筛选时间段之内的数据
        $keyword['list'] = Db::table($data['table'])->where($data['field'],'>=',$data['starttime'])->where($data['field'],'<=',$data['endtime'])->select();
        success($keyword,'筛选成功');
    }

    /**
     * @apiGroup 搜索
     * @apiVersion 1.0.0
     * @api {GET} /keyword/0  按照固定字段搜索
     * @apiDescription 按照固定字段搜索
     * @apiParam {String} table 所搜索模块(必填*)
     * @apiParam {String} field 所搜索字段:创建时间或者修改时间(必填*)
     * @apiParam {String} keyid 关键字段id(必填*)
     * @apiSuccessExample SuccessExample 成功事例
     * HTTP/1.0.0 200
     * {
     * status: 1,
     * data: array
     * message: '获取数据成功'
     * }
     * @apiErrorExample ErrorExample 失败选项
     * HTTP/1.0.0 500
     * {
     * status: '0',
     * message: '错误提示'
     * }
     */
    public function read()
    {
        $data = input();
        //必填项验证
        if (empty($data['table'])){
            error('520数据错误(Missing parameter table)');
        }
        //必填项验证
        if (empty($data['field'])){
            error('520数据错误(Missing parameter field)');
        }
        //必填项验证
        if (empty($data['keyid'])){
            error('520数据错误(Missing parameter keyid)');
        }
        //筛选符合条件的数据
        $keyword['list'] = Db::table($data['table'])->where($data['field'],$data['keyid'])->select();
        success($keyword,'获取数据成功');
    }
}
